package com.wcpdoc.survey.survey.dao;

import java.util.List;
import java.util.Map;

import com.wcpdoc.survey.core.dao.BaseDao;
import com.wcpdoc.survey.core.entity.LoginUser;
import com.wcpdoc.survey.core.entity.PageIn;
import com.wcpdoc.survey.core.entity.PageOut;
import com.wcpdoc.survey.survey.entity.Survey;
import com.wcpdoc.survey.survey.entity.SurveyType;

/**
 * 调查数据访问层接口
 * 
 * v1.0 zhanghc 2017-06-11 09:13:23
 */
public interface SurveyDao extends BaseDao<Survey>{
	
	/**
	 * 获取调查用户列表 
	 * 
	 * v1.0 zhanghc 2017年6月16日下午5:02:45
	 * @param pageIn
	 * @return PageOut
	 */
	PageOut getSurveyUserListpage(PageIn pageIn);

	/**
	 * 获取用户列表 
	 * 
	 * v1.0 zhanghc 2017年6月16日下午5:02:45
	 * @param pageIn
	 * @return PageOut
	 */
	PageOut getSurveyUserAddListpage(PageIn pageIn);

	/**
	 * 获取调查用户问题
	 * 
	 * v1.0 zhanghc 2017年6月19日下午5:44:52
	 * @param surveyId
	 * @param userId
	 * @param questionId
	 * @return SurveyUserQuestion
	 */
	//SurveyUserQuestion getSurveyUserQuestion(Integer surveyId, Integer userId, Integer questionId);

	/**
	 * 完成删除用户
	 * 
	 * v1.0 zhanghc 2017年6月19日下午8:17:32
	 * @param id
	 * @param userId
	 * void
	 */
	void doUserDel(Integer id, Integer userId);

	/**
	 * 获取未结束的调查列表
	 * 
	 * v1.0 zhanghc 2017年6月22日下午10:31:08
	 * @param userId
	 * @return List<Map<String, Object>>
	 */
	List<Map<String, Object>> getUnFinishList(Integer userId);

	/**
	 * 获取调查分类
	 * 
	 * v1.0 zhanghc 2017年6月29日上午7:37:44
	 * @param id
	 * @return SurveyType
	 */
	SurveyType getSurveyType(Integer id);

	/**
	 * 获取调查分类列表
	 * 
	 * v1.0 zhanghc 2017年8月6日下午10:03:54
	 * @param surveyTypeId
	 * @return List<Survey>
	 */
	List<Survey> getList(Integer surveyTypeId);

	/**
	 * 获取我的调查列表
	 * 
	 * v1.0 zhanghc 2017年8月11日下午5:31:36
	 * @param pageIn
	 * @return PageOut
	 */
	PageOut getMySurveyListpage(PageIn pageIn);

	/**
	 * 获取判卷用户列表
	 * 
	 * v1.0 zhanghc 2017年8月14日上午11:00:01
	 * @param pageIn
	 * @return PageOut
	 */
	PageOut getMarkUserListpage(PageIn pageIn);
	

	/**
	 * 获取判卷用户添加列表 
	 * 
	 * v1.0 zhanghc 2017年8月14日上午11:15:15
	 * @param pageIn
	 * @return PageOut
	 */
	PageOut getMarkUserAddListpage(PageIn pageIn);

	/**
	 * 获取判卷列表
	 * 
	 * v1.0 zhanghc 2017年8月23日下午4:07:11
	 * @param pageIn
	 * @return PageOut
	 */
	PageOut getMarkPaperListpage(PageIn pageIn);

	/**
	 * 完成强制交卷
	 * 
	 * v1.0 zhanghc 2017年8月28日上午10:42:34
	 * @param user
	 * void
	 */
	void doForcePaper(LoginUser user);

	/**
	 * 获取判卷用户列表
	 * 
	 * v1.0 zhanghc 2017年8月28日下午1:53:23
	 * @param id
	 * @return List<MarkUser>
	 */
	//List<MarkUser> getMarkUserList(Integer id);

	/**
	 * 获取成绩列表
	 * 
	 * v1.0 zhanghc 2017年8月29日下午3:18:37
	 * @param pageIn
	 * @return PageOut
	 */
	PageOut getGradeListpage(PageIn pageIn);

	/**
	 * 获取图表数据
	 * 
	 * v1.0 zhanghc 2017年10月29日上午11:30:46
	 * @param surveyId
	 * @param questionId
	 * @return Map<String, Object>
	 */
	Map<String, Object> getChartData(int surveyId, int questionId);
}
